/**
 * leetcode算法题：岛屿数量
 */
function numberOfIslands(map) {
    function dfs(r, c) {
        if (r < 0 || r >= map.length() || c < 0 || c >= map[r].length()) {
            return
        }
        if (map[r][c] == '0') {
            return
        }
        map[r][c] = '0'
        dfs(r - 1, c)
        dfs(r + 1, c)
        dfs(r, c - 1)
        dfs(r, c + 1)
    }
    
    var cnt = 0
    for (var i = 0; i < map.length(); ++i) {
        for (var j = 0; j < map[i].length(); ++j) {
            if (map[i][j] == '1') {
                cnt++
                dfs(i, j)
            }
        }
    }
    return cnt
}

var map1 = [
    ['1', '1', '1', '1', '0'],
    ['1', '1', '0', '1', '0'],
    ['1', '1', '0', '0', '0'],
    ['0', '0', '0', '0', '0']
]
println(numberOfIslands(map1))

var map2 = [
    ['1', '1', '0', '0', '0'],
    ['1', '1', '0', '0', '0'],
    ['0', '0', '1', '0', '0'],
    ['0', '0', '0', '1', '1']
]
println(numberOfIslands(map2))
           
         
          
     